<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * 系统model
 * 
 * @author 赵亮
 * 
 * @date 2017年8月4日
 *
 */
class AR_Model extends CI_Model {
	
	public function __construct()
	{
		parent::__construct();
	}
	
	/**
	 * 添加
	 * @author 赵亮
	 *
	 * @date 2017年8月4日
	 *
	 * @param unknown_type $data
	 *
	 * @return bool
	 */
	public function add($data) {
		$this->db->insert($this->_tb, $data);
		if($this->db->affected_rows() > 0) {
			return $this->db->insert_id();
		}else {
			return -1;//添加失败
		}
	}
	
	/**
	 * 查询所有
	 *
	 * @author 赵亮
	 * @date 2017年8月19日
	 *
	 * @param $where
	 * 			查询条件
	 * @param $select
	 * 			查询列
	 * @param $orderby
	 * 			排序
	 * @param $array
	 * 			返回数组还是对象
	 */
	public function get_all($where='',$select='*',$orderby = '',$array=false)
	{
		if($where) $this->db->where($where,'',false);
		if($select) $this->db->select($select);
		if($orderby) $this->db->order_by($orderby);
		$query = $this->db->get($this->_tb);
		if($array) return $query->result_array();
		else return $query->result();
	}
	
	/**
	 *	获取单个数据
	 *
	 * @author 赵亮
	 *
	 * @date 2017年8月4日
	 *
	 * @param $where
	 * 			查询条件
	 * @param $select
	 * 			查询列
	 * @param $orderby
	 * 			排序
	 * @param $array
	 * 			返回数组还是对象
	 */
	public function get_one($where='',$select='*',$orderby = '',$array=true)
	{
		if($where){
			$this->db->where($where,'',false);
		}
		if($select){
			$this->db->select($select);
		}
		if($orderby){
			$this->db->order_by($orderby);
		}
		$query = $this->db->get($this->_tb);
		if($array){
			return $query->row_array();
		}else{
			return $query->row();
		}
	}
	
	
	
	
	
	/**
	 * 更新数据
	 * @author 赵亮
	 *
	 * @date 2017年8月4日
	 *
	 * @param  string $table
	 * 					更新的表格
	 * @param  array $data
	 *                  更新的数据
	 * @param  string $where
	 *                  条件
	 * @return bool
	 *
	 */
	public function update_for_tb($table,$data,$where='')
	{
		if($where) $this->db->where($where);
		//$this->db->set('MODIFY_DATE', 'sysdate', FALSE);
		foreach ($data as $k=>$v){
			if (preg_match ("/TO_DATE/", $v)){
				$this->db->set($k,$v,false);
			}else{
				$this->db->set($k,$v);
			}
		}
		$result = $this->db->update($table);
		if($this->db->affected_rows() > 0) {
			return TRUE;
		} else {
			return FALSE;
		}
	}
	
	/**
	 * 更新
	 * @param  [type] $data [description]
	 * @param  [type] $where [description]
	 * @return [type]       [description]
	 */
	public function update($data,$where='')
	{
		if($where) $this->db->where($where,'',false);
		foreach ($data as $k=>$v){
			if (preg_match ("/TO_DATE/", $v)){
				$this->db->set($k,$v,false);
			}else{
				$this->db->set($k,$v);
			}
		}
		$result = $this->db->update($this->_tb);
		if($this->db->affected_rows() > 0) {
			return TRUE;
		} else {
			return FALSE;
		}
	}
	/**
	 * 获取分页
	 *
	 * @author 赵亮
	 * @date 2017年8月7日
	 * 
	 * @param string $select
	 * @param string $condition
	 * @param int $offset
	 * @param int $limit
	 * @param string $orderby
	 */
	public function get_list($select = "*",$condition,$offset,$limit, $orderby = ''){
		if($select){
			$this->db->select ($select);
		}
		if($condition){
			$this->db->where ( $condition, '', false );
		}
		$this->db->from ( $this->_tb );
		if($offset >= 0 && $limit > 0) {
			$this->db->offset($offset);
			$this->db->limit($limit);
		}
		if($orderby){
			$this->db->order_by ($orderby);
		}
		$rel = $this->db->get ()->result_array ();
		return $rel;
	}
	
	/**
	 * 
	 *
	 * @author 赵亮
	 * @date 2017年8月7日
	 *
	 * @param string $condition
	 */
	public function get_total_count($condition = "") {
		if($condition){
			$this->db->where ( $condition, '', false );
		}
		$this->db->from ($this->_tb);
		$rel = $this->db->count_all_results ();
		return $rel;
	}
	
	/**
	 * 
	 * 批量加入数据
	 * @author 赵亮
	 * @date 2017年8月8日
	 *
	 * @param array $data
	 */
	public function add_batch($data){
		$this->db->insert_batch($this->_tb,$data);
		if($this->db->affected_rows() > 0) {
			return true;
		} else {
			return FALSE;
		}
	}
	
	/**
	 *删除
	 **/
	public function delete($where='')
	{
		if($where) $this->db->where($where);
		return $this->db->delete($this->_tb);
	}
}
?>